import { createRouter, createWebHistory } from 'vue-router'
import {setToken, getToken, removeToken } from '@/utils/auth/index'
import { constanceRoute } from './routes'
import pinia, {useUserStore} from "@/store";
import {ElMessage} from "element-plus";

//要用花括号引入
const router = createRouter({
  history: createWebHistory(),
  routes: constanceRoute,
  //滚动行为，也就是重新进入路由时，页面的位置
  scrollBehavior() {
    return {
      top: 0,
      left: 0
    }
  }
})
// 拦截规则
router.beforeEach((to, from, next) => {
  const useStore = useUserStore();

  // 检查是否是 /verifyEmail 路径，包括查询参数
  if (to.path.startsWith('/verifyEmail')) {
    return next(); // 直接放行
  }

  const satoken = useStore.satoken;

  if (satoken) {
    if (to.path === '/login') {
      return next('/home'); // 已登录访问登录页面，重定向到首页
    }
    // 检查用户是否有权限访问目标路由
    if (!useStore.useroutename.includes(to.name)) {
      ElMessage.error('无权访问')
      // 但实际没有重定向到登录页而是首页。应该是因为有登录态转回来了
      return next('/login'); // 无权限访问目标路由，重定向到登录页面
    }
  } else {
    // 用户未登录
    if (to.path !== '/login') {
      return next('/login'); // 未登录访问非登录页面，重定向到登录页面
    }
  }

  console.log('!useStore.useroutename.includes(to.name)',!useStore.useroutename.includes(to.name))
  // home检查
  if (!useStore.useroutename.includes(to.name) && to.path !== '/login') {

    return next('/login');
  }

  // 其他条件检查
  if (!useStore.useroutename.includes(to.name) && to.path !== '/login') {
    return next('/login');
  }

  // 默认放行
  return next();
});
//这只是个拦截
// 注意是((res)=>{method})
export default router
